…lines 1–83 unchanged (83 lines)
84
85 format.setInteger(MediaFormat.KEY_WIDTH, size.getWidth());
86 format.setInteger(MediaFormat.KEY_HEIGHT, size.getHeight());
87
88 Surface surface = null;
89 boolean mediaCodecStarted = false;
90 boolean captureStarted = false;
91 try {
92 mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
93 surface = mediaCodec.createInputSurface();
94
95 capture.start(surface);
96 captureStarted = true;
97
98 mediaCodec.start();
99 mediaCodecStarted = true;
100
101 // Set the MediaCodec instance to "interrupt" (by signaling an EOS) on reset
102 reset.setRunningMediaCodec(mediaCodec);
…lines 103–116 unchanged (14 lines)
117 if (!prepareRetry(size)) {
118 throw e;
119 }
120 alive = true;
121 } finally {
122 reset.setRunningMediaCodec(null);
123 if (captureStarted) {
124 capture.stop();
125 }
126 if (mediaCodecStarted) {
127 try {
128 mediaCodec.stop();
129 } catch (IllegalStateException e) {
130 // ignore (just in case)
131 }
…lines 132–323 unchanged (192 lines)