History

avfilter/vf_curves: don't add offsets to NULL pointers

James Almer committed 1 year ago

Commit 722a2171 parent 11032d81 file · +10 −6Browse files

Showing the changes to libavfilter (1 of 1 file). Show all

Unified · Split

libavfilter/vf_curves.c+10−6
@@ -813,11 +813,11 @@ static int filter_slice_planar(AVFilterContext *ctx, void *arg, int jobnr, int n · 812 unmodified lines
813813 uint16_t *dstrp = ( uint16_t *)(out->data[r] + y * out->linesize[r]);
814814 uint16_t *dstgp = ( uint16_t *)(out->data[g] + y * out->linesize[g]);
815815 uint16_t *dstbp = ( uint16_t *)(out->data[b] + y * out->linesize[b]);
816− uint16_t *dstap = ( uint16_t *)(out->data[a] + y * out->linesize[a]);
816+ uint16_t *dstap = ( uint16_t *)(step == 4 ? out->data[a] + y * out->linesize[a] : NULL);
817817 const uint16_t *srcrp = (const uint16_t *)(in ->data[r] + y * in->linesize[r]);
818818 const uint16_t *srcgp = (const uint16_t *)(in ->data[g] + y * in->linesize[g]);
819819 const uint16_t *srcbp = (const uint16_t *)(in ->data[b] + y * in->linesize[b]);
820− const uint16_t *srcap = (const uint16_t *)(in ->data[a] + y * in->linesize[a]);
820+ const uint16_t *srcap = (const uint16_t *)(step == 4 ? in ->data[a] + y * in->linesize[a] : NULL);
821821
822822 for (x = 0; x < in->width; x++) {
823823 dstrp[x] = curves->graph[R][srcrp[x]];
@@ -831,11 +831,13 @@ static int filter_slice_planar(AVFilterContext *ctx, void *arg, int jobnr, int n · 7 unmodified lines
831831 uint8_t *dstr = out->data[r] + slice_start * out->linesize[r];
832832 uint8_t *dstg = out->data[g] + slice_start * out->linesize[g];
833833 uint8_t *dstb = out->data[b] + slice_start * out->linesize[b];
834− uint8_t *dsta = out->data[a] + slice_start * out->linesize[a];
834+ uint8_t *dsta = step == 4 ? out->data[a]
835+ + slice_start * out->linesize[a] : NULL;
835836 const uint8_t *srcr = in->data[r] + slice_start * in->linesize[r];
836837 const uint8_t *srcg = in->data[g] + slice_start * in->linesize[g];
837838 const uint8_t *srcb = in->data[b] + slice_start * in->linesize[b];
838− const uint8_t *srca = in->data[a] + slice_start * in->linesize[a];
839+ const uint8_t *srca = step == 4 ? in->data[a]
840+ + slice_start * in->linesize[a] : NULL;
839841
840842 for (y = slice_start; y < slice_end; y++) {
841843 for (x = 0; x < in->width; x++) {
@@ -848,11 +850,13 @@ static int filter_slice_planar(AVFilterContext *ctx, void *arg, int jobnr, int n · 6 unmodified lines
848850 dstr += out->linesize[r];
849851 dstg += out->linesize[g];
850852 dstb += out->linesize[b];
851− dsta += out->linesize[a];
852853 srcr += in ->linesize[r];
853854 srcg += in ->linesize[g];
854855 srcb += in ->linesize[b];
855− srca += in ->linesize[a];
856+ if (step == 4) {
857+ dsta += out->linesize[a];
858+ srca += in ->linesize[a];
859+ }
856860 }
857861 }
858862 return 0;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t